package util;

import java.util.List;

public class PageModel {
	
	private List list;	// 数据记录
	private int totalRecords;	// 总记录数
	
	
	private int totalPages = 1;		// 总页数
	private int pageSize = 3;	// 每页记录数
	private int pageNo = 1;		// 当前页
	private int nextPageNo;	// 下一页
	private int previousPageNo;	// 上一页
	private int topPageNo;	// 首页	
	private int bottomPageNo;	// 尾页
	
	// 分页中显示的页码
	private int startPage;	//	开始页码
	private int endPage;	//	结束页码
	private int showPage = 3;	//	显示页码数
	private int[] showPages;
	
	public int[] getShowPages() {
		getStartPage();
		getEndPage();
		showPages = new int[endPage-startPage+1];
		for(int i=0; i<showPages.length; i++) {
			showPages[i] = startPage + i;
		}
		return showPages;
	}
	
	private void initPage() {
		getTotalPages();
		startPage = 1;
		endPage = pageNo;
		if(showPage >= totalPages) {
			endPage = totalPages;
		} else if(pageNo >= showPage / 2) {
			if((pageNo + showPage / 2) > totalPages) {
				startPage = totalPages - showPage + 1;
				endPage = totalPages;
			} else {
				startPage = pageNo - showPage / 2 + 1;
				endPage = pageNo + showPage / 2;
			}
		}
	}

	// 下一页
	public int getNextPageNo() {
		nextPageNo = pageNo >= getTotalPages() ? getTotalPages() : pageNo + 1;
		return nextPageNo;
	}
	
	// 上一页
	public int getPreviousPageNo() {
		previousPageNo = pageNo <= 1 ? 1 : pageNo - 1;
		return previousPageNo;
	}
	
	// 首页  
	public int getTopPageNo() {
		return 1;
	}

	// 最后一页 
	public int getBottomPageNo() {
		bottomPageNo = getTotalPages();
		return bottomPageNo;
	}

	// 总页数
	public int getTotalPages() {
		totalPages = (totalRecords + pageSize - 1) / pageSize;
		return totalPages;
	}
	
	// 当前页
	public int getPageNo() {
		return pageNo;
	}

	public int getStartPage() {
		initPage();
		return startPage;
	}
	
	public int getEndPage() {
		initPage();
		return endPage;
	}
	

	public int getShowPage() {
		return showPage;
	}

	public int getTotalRecords() {
		return totalRecords;
	}
	
	public int getPageSize() {
		return pageSize;
	}

	public List getList() {
		return list;
	}
	
	public void setPageNo(int pageNo) {
		this.pageNo = pageNo;
	}

	public void setTotalRecords(int totalRecords) {
		this.totalRecords = totalRecords;
	}

	public void setPageSize(int pageSize) {
		this.pageSize = pageSize;
	}

	public void setList(List list) {
		this.list = list;
	}

	public void setNextPageNo(int nextPageNo) {
		this.nextPageNo = nextPageNo;
	}

	public void setPreviousPageNo(int previousPageNo) {
		this.previousPageNo = previousPageNo;
	}

	public void setTopPageNo(int topPageNo) {
		this.topPageNo = topPageNo;
	}

	public void setBottomPageNo(int bottomPageNo) {
		this.bottomPageNo = bottomPageNo;
	}

	public void setEndPage(int endPage) {
		this.endPage = endPage;
	}

	public void setShowPage(int showPage) {
		this.showPage = showPage;
	}
	
	public void setStartPage(int startPage) {
		this.startPage = startPage;
	}

	public void setTotalPages(int totalPages) {
		this.totalPages = totalPages;
	}
	

	public void setShowPages(int[] showPages) {
		this.showPages = showPages;
	}
}
